<!DOCTYPE HTML>
<script src="../../resources/js-test.js"></script>
<style>
    div { display: inline-block; }
    p { width: 200px; height: 120px; margin: 0px; }
    #simple-all { margin: calc(13px + 12px); }
    #simple-left { margin-left: calc(13px + 12px); }
    #simple-right { margin-right: calc(13px + 12px); }
    #simple-top { margin-top: calc(13px + 12px); }
    #simple-bottom { margin-bottom: calc(13px + 12px); }
    #percent-all { margin: calc(10% - 5px); }
    #percent-left { margin-left: calc(10% - 5px); }
    #percent-right { margin-right: calc(10% - 5px); }
    #percent-top { margin-top: calc(10% - 5px); }
    #percent-bottom { margin-bottom: calc(10% - 5px); }
</style>

<div id="test-container">
    <p id="simple-all">This element should have an overall margin of 25 pixels.</p><br/>
    <p id="simple-left">This element should have a left margin of 25 pixels.</p><br/>
    <p id="simple-right">This element should have a right margin of 25 pixels.</p><br/>
    <p id="simple-top">This element should have a top margin of 25 pixels.</p><br/>
    <p id="simple-bottom">This element should have a bottom margin of 25 pixels.</p><br/>
    <div id="wrapper" style="width: 300px; background-color: cornsilk; display: block;">
        <p id="percent-all">This element should have an overall margin of 25 pixels (10% of parent width of 300px minus 5px).</p><br/>
        <p id="percent-left">This element should have a left margin of 25 pixels (10% of parent width of 300px minus 5px).</p><br/>
        <p id="percent-right">This element should have a right margin of 25 pixels (10% of parent width of 300px minus 5px).</p><br/>
        <p id="percent-top">This element should have a top margin of 25 pixels (10% of parent width of 300px minus 5px).</p><br/>
        <p id="percent-bottom">This element should have a bottom margin of 25 pixels (10% of parent width of 300px minus 5px).</p><br/>
    </div>
</div>
<script>

    function computedMarginLeft(id)
    {
        return getComputedStyle(document.getElementById(id), null).marginLeft;
    }
    function computedMarginRight(id)
    {
        return getComputedStyle(document.getElementById(id), null).marginRight;
    }
    function computedMarginTop(id)
    {
        return getComputedStyle(document.getElementById(id), null).marginTop;
    }
    function computedMarginBottom(id)
    {
        return getComputedStyle(document.getElementById(id), null).marginBottom;
    }

    var innerWidth = 200;
    var innerHeight = 120;
    var margin = "25px";
    var noMargin = "0px";

    var tests = document.getElementsByTagName("p");
    for (var i = 0; i < tests.length; ++i) {
        var innerElement = tests[i]
        var expectedLeft = noMargin;
        var expectedTop = noMargin;
        var expectedRight = noMargin;
        var expectedBottom = noMargin;
        switch (innerElement.id.split("-")[1]) {
        case "all":
            expectedLeft = margin;
            expectedTop = margin;
            expectedRight = margin;
            expectedBottom = margin;
            break;
        case "top":
            expectedTop = margin;
            break;
        case "bottom":
            expectedBottom = margin;
            break;
        case "left":
            expectedLeft = margin;
            break;
        case "right":
            expectedRight = margin;
            break;
        }

        shouldBeEqualToString('computedMarginLeft("' + innerElement.id + '")', expectedLeft);
        shouldBeEqualToString('computedMarginTop("' + innerElement.id + '")', expectedTop);
        shouldBeEqualToString('computedMarginRight("' + innerElement.id + '")', expectedRight);
        shouldBeEqualToString('computedMarginBottom("' + innerElement.id + '")', expectedBottom);
    }
    
    if (window.testRunner) {
        var testContainer = document.getElementById("test-container");
        if (testContainer)
            document.body.removeChild(testContainer);   
    }    
</script>
